When the power is turned off in most pre-existing computer systems, the current status of the system is entirely lost. Consequently, when the power is turned back on, the particular application program to be run must usually be manually selected and loaded. Some pre-existing computers, however, have a feature known as suspend/resume capability, which permits the entire operational status of the processing unit to be saved when the power is turned off and to be restored when the power is turned back on, so that the user automatically finds himself in precisely the same application program and at precisely the same point on the same screen as when the power was turned off.
Commercially available hard disk drives can often be selectively programmed in different ways. For example, there are hard disk drives which can be programmed to a multiple mode setting which allows data transfer to occur in multiple sector blocks with only one interrupt at the end of the block. Also, there are drives which can be given a predetermined time value and, whenever this time period elapses without an access to the drive, the drive automatically stops its motor, and does not start the motor again until a further access occurs. Moreover, there are hard disk drives which can be configured for a specific number of tracks per disk, sectors per track and number of heads. In a commercially available drive, these features are initialized by sending commands/data to the drive, but the drive usually does not provide any way for the system to subsequently obtain from the drive an indication of how these features have been set. It is assumed that the operating system already knows how it has set these features.
In order to use a hard disk of this type with a system having suspend/resume capability, and since the electronic circuitry in the drive will forget its current status during the suspend operation because of the fact that power to the drive circuitry is turned off, it is important that the exact status of the hard disk drive prior to the suspend operation be stored before the suspend, and that this status be restored in the hard disk drive when operation subsequently resumes. Otherwise, the hard disk drive will operate differently after the suspend operation than it did before the suspend operation, which in turn may cause the application program to operate differently and/or improperly, which would obviously defeat the entire purpose of the suspend/resume capability.
Consequently, it is important for the hardware of a computer system (including the firmware in read only memory) to be designed so that it maintains externally of the hard disk drive a record of the specific settings to which the drive has been programmed. Thus, in a traditional system of the IBM compatible type, the firmware program commonly referred to as the basic input/output system (BIOS) would maintain this external record of the disk settings. So long as the operating system communicated with the disk drive only through the routines of the BIOS, the BIOS could maintain this record with no difficulty whatsoever. However, there are commercially available operating systems such as OS/2 and UNIX, which bypass the BIOS routines and directly set perimeters in the hard disk drive. When the BIOS is bypassed, it obviously cannot maintain an accurate record of the specific settings programmed in the hard disk drive. Therefore, if such a system is to be placed in suspend mode at a point in time where a program such as OS/2 or UNIX has been running, the firmware routines which guide the system into suspend mode will not have an accurate record from the BIOS of the settings which have been programmed into the hard disk drive and, as mentioned above, these routines cannot obtain the same information directly from the drive itself. Consequently, a system which implements suspend/resume capability and uses a conventional hard disk drive cannot guarantee proper operation with certain pre-existing programs such as OS/2 and UNIX. On the other hand, it is desirably to avoid the design of a new hard disk drive which would permit proper operation of OS/2 and UNIX in a system with suspend/resume capability, but which is incompatible with existing interface and cabling standards.
It is therefore an object of the present invention to provide a method and apparatus facilitating use of a hard disk drive in a computer system with suspend/resume capability so as to maintain compatibility with pre-existing programs, while simultaneously maintaining compatibility with existing interface and cabling standards.
It is a further object of the present invention to provide such a system in which the disk drive facilitates saving and restoring of its current status.
It is a further object of the invention to provide such an apparatus which involves little or no redesign of the circuitry of a hard disk drive and associated cabling, so that the disk drive has a cost comparable to that of pre-existing drives.